package com.google.code.puertorico

abstract sealed class Building(val cost: Int, val victoryPoints: Int, val size: Int, val capacity: Int) {
  val slaves: Int
}
case class SmallIndigoPlant(slaves: Int) extends Building(cost = 1, victoryPoints = 1, size = 1, capacity = 1)
case class SmallSugarMill(slaves: Int) extends Building(cost = 2, victoryPoints = 1, size = 1, capacity = 1)
case class SmallMarket(slaves: Int) extends Building(cost = 1, victoryPoints = 1, size = 1, capacity = 1)
case class Hacienda(slaves: Int) extends Building(cost = 2, victoryPoints = 1, size = 1, capacity = 1)
case class ConstructionHut(slaves: Int) extends Building(cost = 2, victoryPoints = 1, size = 1, capacity = 1)
case class SmallWarehouse(slaves: Int) extends Building(cost = 3, victoryPoints = 1, size = 1, capacity = 1)
case class IndigoPlant(slaves: Int) extends Building(cost = 3, victoryPoints = 2, size = 1, capacity = 3)
case class SugarMill(slaves: Int) extends Building(cost = 4, victoryPoints = 2, size = 1, capacity = 3)
case class Hospice(slaves: Int) extends Building(cost = 4, victoryPoints = 2, size = 1, capacity = 1)
case class Office(slaves: Int) extends Building(cost = 5, victoryPoints = 2, size = 1, capacity = 1)
case class LargeMarket(slaves: Int) extends Building(cost = 5, victoryPoints = 2, size = 1, capacity = 1)
case class LargeWarehouse(slaves: Int) extends Building(cost = 6, victoryPoints = 2, size = 1, capacity = 1)
case class TobaccoStorage(slaves: Int) extends Building(cost = 5, victoryPoints = 3, size = 1, capacity = 3)
case class CoffeeRoaster(slaves: Int) extends Building(cost = 6, victoryPoints = 3, size = 1, capacity = 2)
case class Factory(slaves: Int) extends Building(cost = 7, victoryPoints = 3, size = 1, capacity = 1)
case class University(slaves: Int) extends Building(cost = 8, victoryPoints = 3, size = 1, capacity = 1)
case class Harbor(slaves: Int) extends Building(cost = 8, victoryPoints = 3, size = 1, capacity = 1)
case class Wharf(slaves: Int) extends Building(cost = 9, victoryPoints = 3, size = 1, capacity = 1)
case class GuildHall(slaves: Int) extends Building(cost = 10, victoryPoints = 4, size = 2, capacity = 1)
case class Residence(slaves: Int) extends Building(cost = 10, victoryPoints = 4, size = 2, capacity = 1)
case class Fortress(slaves: Int) extends Building(cost = 10, victoryPoints = 4, size = 2, capacity = 1)
case class CustomsHouse(slaves: Int) extends Building(cost = 10, victoryPoints = 4, size = 2, capacity = 1)
case class CityHall(slaves: Int) extends Building(cost = 10, victoryPoints = 4, size = 2, capacity = 1)

